【例子介绍】视频播放框架组件DKVideoPlayer,直接传入url播放视频
【相关图片】
【源码结构】
.
├── LICENSE
├── README.md
├── build.gradle
├── constants.gradle
├── devlin.jks
├── dkplayer-java
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ └── dueeeke
│ │ └── videoplayer
│ │ ├── controller
│ │ │ ├── BaseVideoController.java
│ │ │ ├── ControlWrapper.java
│ │ │ ├── GestureVideoController.java
│ │ │ ├── IControlComponent.java
│ │ │ ├── IGestureComponent.java
│ │ │ ├── IVideoController.java
│ │ │ ├── MediaPlayerControl.java
│ │ │ └── OrientationHelper.java
│ │ ├── player
│ │ │ ├── AbstractPlayer.java
│ │ │ ├── AndroidMediaPlayer.java
│ │ │ ├── AndroidMediaPlayerFactory.java
│ │ │ ├── AudioFocusHelper.java
│ │ │ ├── PlayerFactory.java
│ │ │ ├── ProgressManager.java
│ │ │ ├── VideoView.java
│ │ │ ├── VideoViewConfig.java
│ │ │ └── VideoViewManager.java
│ │ ├── render
│ │ │ ├── IRenderView.java
│ │ │ ├── MeasureHelper.java
│ │ │ ├── RenderViewFactory.java
│ │ │ ├── TextureRenderView.java
│ │ │ └── TextureRenderViewFactory.java
│ │ └── util
│ │ ├── CutoutUtil.java
│ │ ├── L.java
│ │ └── PlayerUtils.java
│ └── res
│ └── values
│ └── attrs.xml
├── dkplayer-players
│ ├── exo
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ └── java
│ │ └── com
│ │ └── dueeeke
│ │ └── videoplayer
│ │ └── exo
│ │ ├── ExoMediaPlayer.java
│ │ ├── ExoMediaPlayerFactory.java
│ │ └── ExoMediaSourceHelper.java
│ └── ijk
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ └── dueeeke
│ │ └── videoplayer
│ │ └── ijk
│ │ ├── IjkPlayer.java
│ │ ├── IjkPlayerFactory.java
│ │ └── RawDataSourceProvider.java
│ └── jniLibs
│ ├── arm64-v8a
│ │ ├── libijkffmpeg.so
│ │ ├── libijkplayer.so
│ │ └── libijksdl.so
│ ├── armeabi
│ │ ├── libijkffmpeg.so
│ │ ├── libijkplayer.so
│ │ └── libijksdl.so
│ ├── armeabi-v7a
│ │ ├── libijkffmpeg.so
│ │ ├── libijkplayer.so
│ │ └── libijksdl.so
│ ├── x86
│ │ ├── libijkffmpeg.so
│ │ ├── libijkplayer.so
│ │ └── libijksdl.so
│ └── x86_64
│ ├── libijkffmpeg.so
│ ├── libijkplayer.so
│ └── libijksdl.so
├── dkplayer-sample
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── assets
│ │ ├── test.mp4
│ │ └── tiktok_data
│ ├── ic_launcher-web.png
│ ├── java
│ │ └── com
│ │ └── dueeeke
│ │ └── dkplayer
│ │ ├── activity
│ │ │ ├── BaseActivity.java
│ │ │ ├── CpuInfoActivity.java
│ │ │ ├── MainActivity.java
│ │ │ ├── api
│ │ │ │ ├── ParallelPlayActivity.java
│ │ │ │ ├── PlayRawAssetsActivity.java
│ │ │ │ └── PlayerActivity.java
│ │ │ ├── extend
│ │ │ │ ├── ADActivity.java
│ │ │ │ ├── CacheActivity.java
│ │ │ │ ├── CustomExoPlayerActivity.java
│ │ │ │ ├── CustomIjkPlayerActivity.java
│ │ │ │ ├── DanmakuActivity.java
│ │ │ │ ├── DefinitionPlayerActivity.java
│ │ │ │ ├── FullScreenActivity.java
│ │ │ │ ├── PadActivity.java
│ │ │ │ └── PlayListActivity.java
│ │ │ ├── list
│ │ │ │ ├── DetailActivity.java
│ │ │ │ └── tiktok
│ │ │ │ ├── OnViewPagerListener.java
│ │ │ │ ├── TikTok2Activity.java
│ │ │ │ ├── TikTok3Activity.java
│ │ │ │ ├── TikTokActivity.java
│ │ │ │ └── ViewPagerLayoutManager.java
│ │ │ └── pip
│ │ │ ├── AndroidOPiPActivity.java
│ │ │ ├── PIPActivity.java
│ │ │ ├── PIPListActivity.java
│ │ │ └── TinyScreenActivity.java
│ │ ├── adapter
│ │ │ ├── ListPagerAdapter.java
│ │ │ ├── TikTokAdapter.java
│ │ │ ├── TikTokListAdapter.java
│ │ │ ├── Tiktok2Adapter.java
│ │ │ ├── Tiktok3Adapter.java
│ │ │ ├── VideoListViewAdapter.java
│ │ │ ├── VideoRecyclerViewAdapter.java
│ │ │ └── listener
│ │ │ ├── OnItemChildClickListener.java
│ │ │ └── OnItemClickListener.java
│ │ ├── app
│ │ │ └── MyApplication.java
│ │ ├── bean
│ │ │ ├── TiktokBean.java
│ │ │ └── VideoBean.java
│ │ ├── fragment
│ │ │ ├── BaseFragment.java
│ │ │ ├── list
│ │ │ │ ├── ListViewFragment.java
│ │ │ │ ├── RecyclerViewAutoPlayFragment.java
│ │ │ │ ├── RecyclerViewFragment.java
│ │ │ │ ├── RecyclerViewPortraitFragment.java
│ │ │ │ ├── SeamlessPlayFragment.java
│ │ │ │ └── TikTokListFragment.java
│ │ │ └── main
│ │ │ ├── ApiFragment.java
│ │ │ ├── ExtensionFragment.java
│ │ │ ├── ListFragment.java
│ │ │ └── PipFragment.java
│ │ ├── util
│ │ │ ├── DataUtil.java
│ │ │ ├── IntentKeys.java
│ │ │ ├── PIPManager.java
│ │ │ ├── ProgressManagerImpl.java
│ │ │ ├── Tag.java
│ │ │ ├── Utils.java
│ │ │ └── cache
│ │ │ ├── PreloadManager.java
│ │ │ ├── PreloadTask.java
│ │ │ └── ProxyVideoCacheManager.java
│ │ └── widget
│ │ ├── CenteredImageSpan.java
│ │ ├── FloatView.java
│ │ ├── VerticalViewPager.java
│ │ ├── component
│ │ │ ├── AdControlView.java
│ │ │ ├── DebugInfoView.java
│ │ │ ├── DefinitionControlView.java
│ │ │ ├── MyDanmakuView.java
│ │ │ ├── PipControlView.java
│ │ │ ├── PlayerMonitor.java
│ │ │ └── TikTokView.java
│ │ ├── controller
│ │ │ ├── FloatController.java
│ │ │ ├── PortraitWhenFullScreenController.java
│ │ │ └── TikTokController.java
│ │ ├── player
│ │ │ ├── CustomExoMediaPlayer.java
│ │ │ └── CustomIjkMediaPlayer.java
│ │ ├── render
│ │ │ ├── SurfaceRenderView.java
│ │ │ ├── SurfaceRenderViewFactory.java
│ │ │ ├── TikTokRenderView.java
│ │ │ └── TikTokRenderViewFactory.java
│ │ └── videoview
│ │ ├── DanmukuVideoView.java
│ │ ├── ExoVideoView.java
│ │ └── IjkVideoView.java
│ └── res
│ ├── anim
│ │ ├── anim_alpha_in.xml
│ │ ├── anim_alpha_out.xml
│ │ ├── anim_float_window_enter.xml
│ │ ├── anim_float_window_exit.xml
│ │ ├── anim_slide_bottom_in.xml
│ │ ├── anim_slide_bottom_out.xml
│ │ ├── anim_slide_top_in.xml
│ │ └── anim_slide_top_out.xml
│ ├── drawable
│ │ ├── selector_mute_icon.xml
│ │ ├── shape_ad_bg.xml
│ │ └── shape_float_window_background.xml
│ ├── drawable-hdpi
│ │ ├── ic_tab_extension.png
│ │ ├── ic_tab_functions.png
│ │ ├── ic_tab_list.png
│ │ └── ic_tab_picture_in_picture.png
│ ├── drawable-mdpi
│ │ ├── ic_tab_extension.png
│ │ ├── ic_tab_functions.png
│ │ ├── ic_tab_list.png
│ │ └── ic_tab_picture_in_picture.png
│ ├── drawable-xhdpi
│ │ ├── ic_tab_extension.png
│ │ ├── ic_tab_functions.png
│ │ ├── ic_tab_list.png
│ │ └── ic_tab_picture_in_picture.png
│ ├── drawable-xxhdpi
│ │ ├── ic_tab_extension.png
│ │ ├── ic_tab_functions.png
│ │ ├── ic_tab_list.png
│ │ └── ic_tab_picture_in_picture.png
│ ├── drawable-xxxhdpi
│ │ ├── ic_tab_extension.png
│ │ ├── ic_tab_functions.png
│ │ ├── ic_tab_list.png
│ │ └── ic_tab_picture_in_picture.png
│ ├── layout
│ │ ├── activity_custom_exo_player.xml
│ │ ├── activity_custom_ijk_player.xml
│ │ ├── activity_danmaku_player.xml
│ │ ├── activity_detail.xml
│ │ ├── activity_layout_common.xml
│ │ ├── activity_main.xml
│ │ ├── activity_pad.xml
│ │ ├── activity_parallel_play.xml
│ │ ├── activity_pip.xml
│ │ ├── activity_pip_android_o.xml
│ │ ├── activity_play_raw_assets.xml
│ │ ├── activity_player.xml
│ │ ├── activity_tiktok.xml
│ │ ├── activity_tiktok2.xml
│ │ ├── activity_tiktok3.xml
│ │ ├── fragment_api.xml
│ │ ├── fragment_extension.xml
│ │ ├── fragment_list.xml
│ │ ├── fragment_list_view.xml
│ │ ├── fragment_pip.xml
│ │ ├── fragment_recycler_view.xml
│ │ ├── fragment_tiktok_list.xml
│ │ ├── item_tik_tok.xml
│ │ ├── item_tiktok_list.xml
│ │ ├── item_video.xml
│ │ ├── layout_ad_control_view.xml
│ │ ├── layout_definition_control_view.xml
│ │ ├── layout_float_controller.xml
│ │ ├── layout_rate_item.xml
│ │ ├── layout_rate_pop.xml
│ │ └── layout_tiktok_controller.xml
│ ├── menu
│ │ ├── main_menu.xml
│ │ ├── main_navigation_items.xml
│ │ └── tiktok_impl_menu.xml
│ ├── mipmap-anydpi-v26
│ │ ├── ic_launcher.xml
│ │ └── ic_launcher_round.xml
│ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_foreground.png
│ │ └── ic_launcher_round.png
│ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_foreground.png
│ │ └── ic_launcher_round.png
│ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_foreground.png
│ │ └── ic_launcher_round.png
│ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_foreground.png
│ │ └── ic_launcher_round.png
│ ├── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_foreground.png
│ │ └── ic_launcher_round.png
│ ├── raw
│ │ └── movie
│ ├── values
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── ic_launcher_background.xml
│ │ ├── ids.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── values-en
│ └── strings.xml
├── dkplayer-ui
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ └── dueeeke
│ │ └── videocontroller
│ │ ├── StandardVideoController.java
│ │ └── component
│ │ ├── CompleteView.java
│ │ ├── ErrorView.java
│ │ ├── GestureView.java
│ │ ├── LiveControlView.java
│ │ ├── PrepareView.java
│ │ ├── TitleView.java
│ │ └── VodControlView.java
│ └── res
│ ├── drawable
│ │ ├── dkplayer_battery_level.xml
│ │ ├── dkplayer_layer_progress_bar.xml
│ │ ├── dkplayer_progress_loading.xml
│ │ ├── dkplayer_seekbar_thumb.xml
│ │ ├── dkplayer_seekbar_thumb_normal.xml
│ │ ├── dkplayer_seekbar_thumb_pressed.xml
│ │ ├── dkplayer_selector_full_screen_button.xml
│ │ ├── dkplayer_selector_lock_button.xml
│ │ ├── dkplayer_selector_play_button.xml
│ │ ├── dkplayer_shape_back_bg.xml
│ │ ├── dkplayer_shape_play_bg.xml
│ │ ├── dkplayer_shape_standard_controller_top_bg.xml
│ │ ├── dkplayer_shape_stardard_controller_bottom_bg.xml
│ │ └── dkplayer_shape_status_view_btn.xml
│ ├── drawable-hdpi
│ │ ├── dkplayer_ic_action_arrow_back.png
│ │ ├── dkplayer_ic_action_autorenew.png
│ │ ├── dkplayer_ic_action_battery.png
│ │ ├── dkplayer_ic_action_battery_10.png
│ │ ├── dkplayer_ic_action_battery_20.png
│ │ ├── dkplayer_ic_action_battery_30.png
│ │ ├── dkplayer_ic_action_battery_40.png
│ │ ├── dkplayer_ic_action_battery_50.png
│ │ ├── dkplayer_ic_action_battery_60.png
│ │ ├── dkplayer_ic_action_battery_70.png
│ │ ├── dkplayer_ic_action_battery_80.png
│ │ ├── dkplayer_ic_action_battery_90.png
│ │ ├── dkplayer_ic_action_brightness.png
│ │ ├── dkplayer_ic_action_close.png
│ │ ├── dkplayer_ic_action_fast_forward.png
│ │ ├── dkplayer_ic_action_fast_rewind.png
│ │ ├── dkplayer_ic_action_fullscreen.png
│ │ ├── dkplayer_ic_action_fullscreen_exit.png
│ │ ├── dkplayer_ic_action_lock_close.png
│ │ ├── dkplayer_ic_action_lock_open.png
│ │ ├── dkplayer_ic_action_pause.png
│ │ ├── dkplayer_ic_action_play_arrow.png
│ │ ├── dkplayer_ic_action_replay.png
│ │ ├── dkplayer_ic_action_volume_off.png
│ │ └── dkplayer_ic_action_volume_up.png
│ ├── drawable-mdpi
│ │ ├── dkplayer_ic_action_arrow_back.png
│ │ ├── dkplayer_ic_action_autorenew.png
│ │ ├── dkplayer_ic_action_battery.png
│ │ ├── dkplayer_ic_action_battery_10.png
│ │ ├── dkplayer_ic_action_battery_20.png
│ │ ├── dkplayer_ic_action_battery_30.png
│ │ ├── dkplayer_ic_action_battery_40.png
│ │ ├── dkplayer_ic_action_battery_50.png
│ │ ├── dkplayer_ic_action_battery_60.png
│ │ ├── dkplayer_ic_action_battery_70.png
│ │ ├── dkplayer_ic_action_battery_80.png
│ │ ├── dkplayer_ic_action_battery_90.png
│ │ ├── dkplayer_ic_action_brightness.png
│ │ ├── dkplayer_ic_action_close.png
│ │ ├── dkplayer_ic_action_fast_forward.png
│ │ ├── dkplayer_ic_action_fast_rewind.png
│ │ ├── dkplayer_ic_action_fullscreen.png
│ │ ├── dkplayer_ic_action_fullscreen_exit.png
│ │ ├── dkplayer_ic_action_lock_close.png
│ │ ├── dkplayer_ic_action_lock_open.png
│ │ ├── dkplayer_ic_action_pause.png
│ │ ├── dkplayer_ic_action_play_arrow.png
│ │ ├── dkplayer_ic_action_replay.png
│ │ ├── dkplayer_ic_action_volume_off.png
│ │ └── dkplayer_ic_action_volume_up.png
│ ├── drawable-xhdpi
│ │ ├── dkplayer_ic_action_arrow_back.png
│ │ ├── dkplayer_ic_action_autorenew.png
│ │ ├── dkplayer_ic_action_battery.png
│ │ ├── dkplayer_ic_action_battery_10.png
│ │ ├── dkplayer_ic_action_battery_20.png
│ │ ├── dkplayer_ic_action_battery_30.png
│ │ ├── dkplayer_ic_action_battery_40.png
│ │ ├── dkplayer_ic_action_battery_50.png
│ │ ├── dkplayer_ic_action_battery_60.png
│ │ ├── dkplayer_ic_action_battery_70.png
│ │ ├── dkplayer_ic_action_battery_80.png
│ │ ├── dkplayer_ic_action_battery_90.png
│ │ ├── dkplayer_ic_action_brightness.png
│ │ ├── dkplayer_ic_action_close.png
│ │ ├── dkplayer_ic_action_fast_forward.png
│ │ ├── dkplayer_ic_action_fast_rewind.png
│ │ ├── dkplayer_ic_action_fullscreen.png
│ │ ├── dkplayer_ic_action_fullscreen_exit.png
│ │ ├── dkplayer_ic_action_lock_close.png
│ │ ├── dkplayer_ic_action_lock_open.png
│ │ ├── dkplayer_ic_action_pause.png
│ │ ├── dkplayer_ic_action_play_arrow.png
│ │ ├── dkplayer_ic_action_replay.png
│ │ ├── dkplayer_ic_action_volume_off.png
│ │ └── dkplayer_ic_action_volume_up.png
│ ├── drawable-xxhdpi
│ │ ├── dkplayer_ic_action_arrow_back.png
│ │ ├── dkplayer_ic_action_autorenew.png
│ │ ├── dkplayer_ic_action_battery.png
│ │ ├── dkplayer_ic_action_battery_10.png
│ │ ├── dkplayer_ic_action_battery_20.png
│ │ ├── dkplayer_ic_action_battery_30.png
│ │ ├── dkplayer_ic_action_battery_40.png
│ │ ├── dkplayer_ic_action_battery_50.png
│ │ ├── dkplayer_ic_action_battery_60.png
│ │ ├── dkplayer_ic_action_battery_70.png
│ │ ├── dkplayer_ic_action_battery_80.png
│ │ ├── dkplayer_ic_action_battery_90.png
│ │ ├── dkplayer_ic_action_brightness.png
│ │ ├── dkplayer_ic_action_close.png
│ │ ├── dkplayer_ic_action_fast_forward.png
│ │ ├── dkplayer_ic_action_fast_rewind.png
│ │ ├── dkplayer_ic_action_fullscreen.png
│ │ ├── dkplayer_ic_action_fullscreen_exit.png
│ │ ├── dkplayer_ic_action_lock_close.png
│ │ ├── dkplayer_ic_action_lock_open.png
│ │ ├── dkplayer_ic_action_pause.png
│ │ ├── dkplayer_ic_action_play_arrow.png
│ │ ├── dkplayer_ic_action_replay.png
│ │ ├── dkplayer_ic_action_volume_off.png
│ │ └── dkplayer_ic_action_volume_up.png
│ ├── drawable-xxxhdpi
│ │ ├── dkplayer_ic_action_arrow_back.png
│ │ ├── dkplayer_ic_action_autorenew.png
│ │ ├── dkplayer_ic_action_battery.png
│ │ ├── dkplayer_ic_action_battery_10.png
│ │ ├── dkplayer_ic_action_battery_20.png
│ │ ├── dkplayer_ic_action_battery_30.png
│ │ ├── dkplayer_ic_action_battery_40.png
│ │ ├── dkplayer_ic_action_battery_50.png
│ │ ├── dkplayer_ic_action_battery_60.png
│ │ ├── dkplayer_ic_action_battery_70.png
│ │ ├── dkplayer_ic_action_battery_80.png
│ │ ├── dkplayer_ic_action_battery_90.png
│ │ ├── dkplayer_ic_action_brightness.png
│ │ ├── dkplayer_ic_action_close.png
│ │ ├── dkplayer_ic_action_fast_forward.png
│ │ ├── dkplayer_ic_action_fast_rewind.png
│ │ ├── dkplayer_ic_action_fullscreen.png
│ │ ├── dkplayer_ic_action_fullscreen_exit.png
│ │ ├── dkplayer_ic_action_lock_close.png
│ │ ├── dkplayer_ic_action_lock_open.png
│ │ ├── dkplayer_ic_action_pause.png
│ │ ├── dkplayer_ic_action_play_arrow.png
│ │ ├── dkplayer_ic_action_replay.png
│ │ ├── dkplayer_ic_action_volume_off.png
│ │ └── dkplayer_ic_action_volume_up.png
│ ├── layout
│ │ ├── dkplayer_layout_complete_view.xml
│ │ ├── dkplayer_layout_error_view.xml
│ │ ├── dkplayer_layout_gesture_control_view.xml
│ │ ├── dkplayer_layout_live_control_view.xml
│ │ ├── dkplayer_layout_prepare_view.xml
│ │ ├── dkplayer_layout_standard_controller.xml
│ │ ├── dkplayer_layout_title_view.xml
│ │ └── dkplayer_layout_vod_control_view.xml
│ ├── values
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ └── strings.xml
│ └── values-en
│ └── strings.xml
├── dkplayer-videocache
│ ├── build.gradle
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ └── java
│ └── com
│ └── danikula
│ └── videocache
│ ├── ByteArrayCache.java
│ ├── ByteArraySource.java
│ ├── Cache.java
│ ├── CacheListener.java
│ ├── Config.java
│ ├── GetRequest.java
│ ├── HttpProxyCache.java
│ ├── HttpProxyCacheServer.java
│ ├── HttpProxyCacheServerClients.java
│ ├── HttpUrlSource.java
│ ├── IgnoreHostProxySelector.java
│ ├── InterruptedProxyCacheException.java
│ ├── Logger.java
│ ├── Pinger.java
│ ├── Preconditions.java
│ ├── ProxyCache.java
│ ├── ProxyCacheException.java
│ ├── ProxyCacheUtils.java
│ ├── Source.java
│ ├── SourceInfo.java
│ ├── StorageUtils.java
│ ├── file
│ │ ├── DiskUsage.java
│ │ ├── FileCache.java
│ │ ├── FileNameGenerator.java
│ │ ├── Files.java
│ │ ├── LruDiskUsage.java
│ │ ├── Md5FileNameGenerator.java
│ │ ├── TotalCountLruDiskUsage.java
│ │ ├── TotalSizeLruDiskUsage.java
│ │ └── UnlimitedDiskUsage.java
│ ├── headers
│ │ ├── EmptyHeadersInjector.java
│ │ └── HeaderInjector.java
│ └── sourcestorage
│ ├── DatabaseSourceInfoStorage.java
│ ├── NoSourceInfoStorage.java
│ ├── SourceInfoStorage.java
│ └── SourceInfoStorageFactory.java
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── other
│ ├── module-lite.sh
│ └── test.ffconcat
├── publish.gradle
├── settings.gradle
└── 视频播放框架组件DKVideoPlayer_DKVideoPlayer.zip
115 directories, 446 files
评论